from pydantic import BaseModel
from typing import List, Optional, Dict

# class Item(BaseModel):
#     id: int
#     data: dict
#
#
# class RequestParams(BaseModel):
#     access_key: str

'''Auth'''

class LoginForm(BaseModel):
    username: str
    password: str

class AccessKey(BaseModel):
    access_key: str


'''DialogueHistory'''
class DialogueHistory(BaseModel):
    uuid: str
    created_time: int
    last_modified_time: int
    title: Optional[str] = None
    current_model: Optional[str] = None
    topic_id: Optional[int] = None
    dialogue_content_json: Optional[List[Dict]] = None

class DialogueHistoryTag(BaseModel):
    uuid: str
    last_modified_time: Optional[int] = None
    title: Optional[str] = None


'''Dialogue'''
class Dialogue(BaseModel):
    current_model: Optional[str] = None
    dialogue_content_json: List[Dict]

class CreateDialogueRequest(BaseModel):
    current_model: Optional[str] = None
    dialogue_content_json: List[Dict]



#
# class DialogueGroupsResponse(BaseModel):
#     id: int
#     group_name: str
#
#
# class DialogueGroupCreateRequest(BaseModel):
#     group_name: str
#
#
# class DialogueGroupUpdateRequest(BaseModel):
#     group_name: str
#
#
# class DialogueTagsGetRequest(BaseModel):
#     dialogue_group_id: Optional[int] = None
#
#
# class DialogueTagsGetResponse(BaseModel):
#     id: int
#     dialogue_group_id: Optional[int] = None
#     dialogue_title: Optional[str] = None
#     last_modified_time: int
#     dialogue_json: Optional[Dict] = None


'''Dialogue'''

#
# class DialogueResponse(BaseModel):
#     dialogue_json: List[Dict]
#
#
# class CreateDialogueRequest(BaseModel):
#     dialogue_title: Optional[int] = None
#     dialogue_group_id: Optional[int] = None
#
#
# class CreateDialogueResponse(BaseModel):
#     id: int
#     dialogue_group_id: Optional[int] = None
#     dialogue_title: Optional[str] = None
#     last_modified_time: int
#     current_model: Optional[str] = None
#     dialogue_json: Optional[List[Dict]] = None
#
#
# class UpdateDialogueRequest(BaseModel):
#     dialogue_json: List[Dict]
